home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / Source / ThreadLib 1.0d4 / Version History < prev   
Encoding:
Text File  |  1994-03-16  |  7.3 KB  |  179 lines  |  [TEXT/KAHL]

  1. Version History
  2. ---------------
  3.  
  4. * 1.0d4 94/03/16 (public distribution)
  5.  
  6. Version 1.0d4 of Thread Library is primarily a bug-fix release. The
  7. functional interface has not changed since v1.0d2.2.
  8.  
  9. - Writing the sentinel value in v1.0d3 introduced a bug that corrupted
  10. the application's heap. This was caused by writing the sentinel value
  11. to the application's main stack at the location pointed to by ApplLimit.
  12. Apparently, there are some important data about the heap at that location,
  13. and overwriting them caused the heap to become corrupted. This was the
  14. most serious error yet in any released version of Thread Library and
  15. only slipped through because I didn't adequately test v1.0d3. The sentinel
  16. value is still written to the stacks of threads other than the main
  17. thread. I spent more time testing the current release, and it seems to
  18. work ok.
  19.  
  20. - The ThreadsTest application had some errors in the way it handled
  21. events in its simple event loop. This could have resulted in errors
  22. handling mouse clicks and in handling update events. The current
  23. version should fix those problems.
  24.  
  25. - The variables gThread and gThreadStackSniffer, defined in the file
  26. "ThreadLib.c", were declared with global scope, and could have
  27. conflicted with other variables in an application. These variables are
  28. now declared with static scope to eliminate such conflicts.
  29.  
  30. - Made the type ThreadSNType a synonym for the type ThreadType.
  31. Applications should refer to threads using variables of type
  32. ThreadType. The type ThreadSNType is included for compatability
  33. with versions 1.0d2.2 through 1.0d3. New applications should no
  34. longer use the type ThreadSNType.
  35.  
  36. - Increased the running time of tests in the ThreadsTest application
  37. from 30 seconds to 45 seconds. The time remaining to each test is
  38. now displayed in seconds rather than in ticks.
  39.  
  40. - The ThreadsTest application includes code to enable heap checking
  41. and discipline in TMON or MacsBug. To enable the code, you need to
  42. define DEBUGGER_CHECKS as 1 in the file "ThreadsTest.c".
  43.  
  44. * 1.0d3 94/03/01 (limited public distribution, only posted to the
  45. Boston Computer Society's Mac BBS)
  46.  
  47. - A sentinel value is written to the bottom of the stack to help the stack
  48. sniffer VBL task catch stack overrun.
  49.  
  50. - The ThreadsTest application uses WaitNextEvent if it's available.
  51.  
  52. - Made some minor changes to the code, updated some of the documentation and
  53. the terms of use, and updated the results for the ThreadTimed application.
  54.  
  55. - Did some minor editing to the "Distribution" document so that I could
  56. use it for other free utilities I've released.
  57.  
  58. * 1.0d2.2 94/02/25 (limited distribution)
  59.  
  60. - Added ifdef around the defines for the macros for accessing low-memory
  61. globals so that the code can be compiled using either "SysEqu.h" or
  62. THINK C's "LoMem.h".
  63.  
  64. * 1.0d2.2 94/02/22 (limited distribution)
  65.  
  66. - All threads are referred to using thread serial numbers instead of thread
  67. pointers. This makes the functional interface more robust without affecting
  68. the speed of calls to ThreadYield and the other context switching routines.
  69. Most type definitions were made private and removed from the interface file
  70. "ThreadLib.h".
  71.  
  72. - Added the functions ThreadSleepSet, ThreadData, ThreadDataSet.
  73.  
  74. - Threads are stored in a doubly-linked circular queue of threads.
  75.  
  76. - When a thread is activated it is moved to the end of the queue of threads,
  77. so that the round-robbin scheduling is fairer (since the main thread has the
  78. highest priority).
  79.  
  80. - Fixed the problem encountered by some users that prevented the ThreadsTest
  81. application from updating the counters. Certain low-memory globals are saved
  82. and restored on context switches (these are the same low-memory globals that
  83. Thread Manager saves and restores). This fixes the update problem, which I
  84. suspect was due to some routines in QuickDraw making certain undocumented
  85. assumptions about the location of the stack relative to the location of heap.
  86.  
  87. * 1.0d2.1 94/02/18 (limited distribution)
  88.  
  89. This release is intended primarily to help catch an update problem in the
  90. ThreadsTest application.
  91.  
  92. - The ThreadsTest application now runs first using Thread Manager, then using
  93. Thread Library. Added a "Stop" button to skip a test.
  94.  
  95. - Put back the code to save and restore certain low-memory globals during
  96. context switches in "ThreadLib.c"
  97.  
  98. - Minor improvements to error reporting: "ThreadLib.c" will display a simple
  99. string in the debugger if an assertion fails; "ThreadTimed.c" will display
  100. errors using printf instead of DebugStr.
  101.  
  102. - Minor additions to the documentation and to the description of the
  103. functional interface.
  104.  
  105. - Removed the compiled libraries; anyway they probably wouldn't work with
  106. THINK C 6.0 or MPW and it's too much work to try to keep them synchronized
  107. every time I modify the code (I need a scriptable interface).
  108.  
  109. - Added "reserved" field to the ThreadType structure (this is a private
  110. field reserved for future use).
  111.  
  112. - To reduce the possibility of conflict with user-defined types,
  113. uses ThreadLinkType instead of LLType, ThreadTicksType instead
  114. of TicksType, THREAD_TICKS_MAX instead of TICKS_MAX, and
  115. THREAD_TICKS_SEC instead of TICKS_SEC. Now every type and function
  116. defined in "ThreadLib.h" is preceded with the prefix "Thread", and
  117. every constant is preceded with the prefix "THREAD_".
  118.  
  119. - "ThreadLib.c" includes actual header files instead of using THINK C's
  120. non-standard MacHeaders. This was done primarily so I could use
  121. "SysEqu.h" instead of "LoMem.h", but it will also make porting to
  122. another compiler easier.
  123.  
  124. - Added THREAD_DEBUG so thread debug code can be selectively disabled
  125. without defining NDEBUG and surrounded debug functions with conditional
  126. compile directives to reduce dead-code size in non-debug version.
  127.                          
  128. * 1.0d2 94/02/17 (public distribution)
  129.  
  130. - Added thread serial number field, and the functions ThreadSN and
  131. ThreadFromSN to access the field. Each thread is assigned a unique
  132. serial number to avoid the possibility of disposing of a thread
  133. more than once.
  134.  
  135. - Fixed problem with the "defer and combine stack adjusts" option
  136. to the THINK C optimizer.
  137.  
  138. - Added a stack sniffer VBL task to help detect stack overflow.
  139.  
  140. - Added the functions ThreadStackMinimum and ThreadStackDefault for
  141. determining the minimum and the default stack sizes for threads and
  142. removed the constant THREAD_STACK_SIZE.
  143.  
  144. - Added ThreadTimed test application.
  145.  
  146. - Improved documentation.
  147.  
  148. - For efficiency, defined TickCount as Ticks low-memory global, and made a
  149. few other changes.
  150.  
  151. - For greater ease in adding ThreadLib to other people's applications,
  152. removed use of exceptions. This also increases the efficiency of context
  153. switches in applications that don't use exceptions.
  154.  
  155. - ThreadLib.c now compiles into under 2K (instead of 4.5K) when all debug
  156. code is disabled and all optimizations are enabled.
  157.  
  158. - Removed THREAD_SAVE_GLOBALS code since it didn't seem to be needed.
  159.  
  160. - Added compiled debug and optimized libraries.
  161.  
  162. * 1.0.d1.1 (limited distribution)
  163.  
  164. - Threads are allocated as pointers instead of handles, making them more
  165. efficient.
  166.  
  167. - Fixed a possible bug in the way ThreadSchedule called EventAvail.
  168.  
  169. - Added status field to threads and ThreadStatus/ThreadStatusSet functions
  170. to get and set the value of the field.
  171.  
  172. - The test application uses a modeless dialog so it can be put into the
  173. background, the size flags were set so the system won't complain on 32-bit
  174. systems, and it will display an alert if there's an error.
  175.  
  176. * 1.0d1 94/02/11 (public distribution)
  177.  
  178. First release.
  179.